﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace Flagwind.ComponentModel
{
	/// <summary>
	/// 表示实现该接口的类型是一个请求命令类。
	/// </summary>
	public interface IRequestInstruction : IValidatableObject
	{
		#region 属性定义

		/// <summary>
		/// 获取或设置当前请求签名。
		/// </summary>
		string Sign
		{
			get;
			set;
		}

		/// <summary>
		/// 获取或设置合作者ID。
		/// </summary>
		string PartnerId
		{
			get;
			set;
		}

		/// <summary>
		/// 获取或设置当前请求时间戳。
		/// </summary>
		long Timestamp
		{
			get;
			set;
		}

		/// <summary>
		/// 获取或设置安全凭证号。
		/// </summary>
		string Credential
		{
			get;
			set;
		}

		/// <summary>
		/// 表示当前请求是否为有效请求。
		/// </summary>
		bool IsAvailable
		{
			get;
		}

		/// <summary>
		/// 获取在解析请求中生成的错误集合。
		/// </summary>
		IEnumerable<ValidationResult> ValidationErrors
		{
			get;
		}

		#endregion
	}
}